Receive data into your buffer asynchronously specifying a buffer, offset, count and SocketFlags value. The Tcp.EndReceive event is raised when completed.
Syntax
| Visual Basic (Usage) | Copy Code |
|---|
Dim instance As Tcp
Dim buffer() As Byte
Dim offset As Integer
Dim count As Integer
Dim socketFlags As SocketFlags
Dim state As Object
Dim value As IAsyncResult
value = instance.BeginReceive(buffer, offset, count, socketFlags, state) |
Parameters
- buffer
- Destination memory location to store received data.
- offset
- Starting offset within buffer for filling.
- count
- Maximum number of bytes to receive.
- socketFlags
- A bitwise combination of special use receiving parameters.
- state
- User state information.
Return Value
An IAsyncResult that represents the asynchronous operation, which could still be pending.
Exceptions
Example
The following example demonstrates asynchronous receiving and sending of data.
| Visual Basic | Copy Code |
|---|
Private Sub AsynchTcpDemo()
' Attempt to connect to an echo port.
Try
Tcp1.Connect("myserver", 7)
Catch ex As Exception
Return
End Try
' Send data, since we are connected to an echo port, the same data should be returned.
' The following code demonstrates asynchronously sending data. When data has been sent
' the EndSend event will be raised.
Dim buffer() As Byte = System.Text.Encoding.Default.GetBytes("a")
Tcp1.BeginSend(buffer, 0, buffer.Length, Net.Sockets.SocketFlags.None, Nothing)
End Sub
Private Sub Tcp1_EndSend(ByVal sender As Object, ByVal e As Dart.PowerTCP.SegmentEventArgs) Handles Tcp1.EndSend
' Check for exception
If e.Exception Is Nothing Then
' Send is complete. Display info about the data sent.
Debug.WriteLine("Byte count sent: " + e.Segment.Count)
Debug.WriteLine("Data sent: " + e.Segment.ToString())
Dim buffer(Tcp1.ReceiveBufferSize) As Byte
' Receive the data. The EndReceive event will be raised upon completion.
Tcp1.BeginReceive(buffer, 0, buffer.Length, Net.Sockets.SocketFlags.None, Nothing)
End If
End Sub
Private Sub Tcp1_EndReceive(ByVal sender As Object, ByVal e As Dart.PowerTCP.SegmentEventArgs) Handles Tcp1.EndReceive
' Check for exception
If e.Exception Is Nothing Then
' Receive is complete. Display info about the data sent.
Debug.WriteLine("Byte count received: " + e.Segment.Count)
Debug.WriteLine("Data received: " + e.Segment.ToString())
' Close the connection
Tcp1.Close()
End If
End Sub |
| C# | Copy Code |
|---|
private void AsynchTcpDemo()
{
// Attempt to connect to an echo port.
try
{
tcp1.Connect("myserver", 7);
}
catch(Exception ex)
{return;}
// Send data, since we are connected to an echo port, the same data should be returned.
// The following code demonstrates asynchronously sending data. When data has been sent
// the EndSend event will be raised.
byte[] buffer = System.Text.Encoding.Default.GetBytes("a");
tcp1.BeginSend(buffer, 0, buffer.Length, System.Net.Sockets.SocketFlags.None, null);
}
private void tcp1_EndSend(object sender, Dart.PowerTCP.SegmentEventArgs e)
{
// Check for exception
if(e.Exception == null)
{
// Send is complete. Display info about the data sent.
Debug.WriteLine("Byte count sent: " + e.Segment.Count);
Debug.WriteLine("Data sent: " + e.Segment.ToString());
byte[] buffer = new byte[tcp1.ReceiveBufferSize];
// Receive the data. The EndReceive event will be raised upon completion.
tcp1.BeginReceive(buffer, 0, buffer.Length, System.Net.Sockets.SocketFlags.None, null);
}
}
private void tcp1_EndReceive(object sender, Dart.PowerTCP.SegmentEventArgs e)
{
// Check for exception
if(e.Exception == null)
{
// Receive is complete. Display info about the data sent.
Debug.WriteLine("Byte count received: " + e.Segment.Count);
Debug.WriteLine("Data received: " + e.Segment.ToString());
// Close the connection
tcp1.Close();
}
} |
Remarks
Requirements
Target Platforms: Microsoft .NET Framework 2.0
See Also